{extend name="layout" /}


{block name="title"}
<title>权限控制 - thinkPHP极速后台开发</title>
<meta name="title" content="权限控制 - thinkPHP极速后台开发">
<meta name="keywords" content="权限控制,php,后台开发包，thinkphp、easyadmin、admin,easy,thinkeasyadmin">
<meta name="description" content="灵活的权限控制,随处调用简单判断即可;easyadmin灵活可定制的thinkphp的后台开发工具包,助你快速开发后台">
{/block}

{block name="main"}
<fieldset class="layui-elem-field">
    <legend>权限控制 - <small>开箱即用</small></legend>
    <div class="layui-field-box">
        <p>系统默认集成了简易的权限管理系统</p>
        <p>安装好以后即可直接使用</p>
        <p>也是足够灵活扩展的</p>
        <p>下面详细说明</p>
    </div>
</fieldset>


<fieldset class="layui-elem-field">
    <legend>路由权限控制配置</legend>
    <div class="layui-field-box">
        <p>核心就是配置中的 rules 选项</p>
        <p>增加权限验证 只需要在 rules 数组中增加条目即可</p>
        <pre class="php">
#project\app\admin\config\login.php



// +----------------------------------------------------------------------
// | 登录注册相关配置
// +----------------------------------------------------------------------

return [

    // 无权访问拦截地址
    'no_access_url' => env('manage_login_url', '/admin/login/no_access'),

    // 路由访问限制
    // 如果配置一个 空数组, 表示不验证权限,直接访问
    //
    // anonymous 表示可用匿名访问, 不登录
    // login     表示登录后可用访问
    // other     表示需要指定的权限可以访问 (直接写自己定义的权限名称)
    //
    'rules' => [
        '^/admin/*' => 'login',
        '^/admin/login/.*' => 'anonymous',

        // 为了方便演示,首页不用登录,其他页面都需要登录
        '^/admin/index/' => 'anonymous',

        // ... 其他路由规则,权限配置,在这里增加就好了
    ]

];
</pre>
        <p>在 tp 的中间件中读取 rules配置</p>
        <p>采用的是正则匹配, 用rules数组中的 key 匹配当前 url</p>
        <p>取匹配度最高的一条,作为当前访问url的权限</p>


    </div>

</fieldset>





<fieldset class="layui-elem-field">
    <legend>业务中权限控制</legend>
    <div class="layui-field-box">
        项目的任意地方调用判断即可
        <pre class="php">
if( User::getInstance()->hasRole('role_super') ){
    // 超级管理员才显示菜单
    // 超级管理员才显示字段
    // 超级管理员才执行某段逻辑
    // ...
    // ...
    // 根据自己逻辑干就完了
}
</pre>

    </div>

</fieldset>


{/block}


